package com.hwf.annotation.test1;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 * 通过反射机制解析自定义注解
 */
public class Test {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
        Class clazz = Class.forName("com.hwf.annotation.test1.initDemo");  //拿到类

        Method[] methods = clazz.getMethods();//拿到类中的所有方法
        for (Method method : methods) {
            boolean isInitMethod = method.isAnnotationPresent(initMethod.class);  //判断这个方法上面是否有initMethod注解
            System.out.println(method.getName()+"  :  "+isInitMethod);  //打印所有方法有无注解信息
            if(isInitMethod){
                method.invoke(clazz.getConstructor(null).newInstance(null),null); //通过反射机制，如果某个方法拥有该注解，则去执行这个方法
            }
        }

    }
}
